<template>
  <!-- 问题: 子组件不知道什么时候能够拿到max的值,但总归有一刻能过得到一个真正的max值 -->
  <!-- 此时可以使用watch属性监听父组件传递过来的max值,不管watch被触发几次,但是最后一次一定是一个合法的max数值 -->
  <!-- js代码拿到max值之后,调用mui的js接口传递给最大值 -->
  <div class="mui-numbox" data-numbox-min="1">
    <button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
    <input
      id="test"
      class="mui-input-numbox"
      type="number"
      v-model="count"
      ref="numbox"
      @change="countChanged"
    >
    <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
  </div>

  <!-- 分析:子组件什么时候把数据传递给父组件 -->
  <!-- 经过分析:每当numbox的文本框的值发生变化的时候都需要传递给父组件 -->
  <!-- 通过为文本框绑定change事件,调用父组件传递过来的方法-->
</template>
<script>
import mui from "../lib/mui/js/mui.min.js";
export default {
  props: ["max"],
  data() {
    return {
      count: 1 // 默认数量为1
    };
  },
  mounted() {
    // 初始化数字选择框组件
    mui(".mui-numbox").numbox();
    // console.log(this.max);
  },
  methods: {
    countChanged() {
      // 每当文本框的值发生变化的时候,调用父组件的方法传递过去
      setTimeout(() =>
        this.$emit("getCount", parseInt(this.$refs.numbox.value), 100)
      );
    }
  },
  watch: {
    // 经过测试,发现watch在这个mui控件上不好用,只能手动输入的数字才能触发watch,点击加减按钮无法触发,可能是v-model绑定的问题
    // count: function(newvalue, old){
    //   console.log(this.count);
    //   // 一旦值发生改变,就调用父组件的方法传递过去
    //   this.$emit("getCount", parseInt(newvalue));
    // },
    max: (newvalue, oldvalue) => {
      mui(".mui-numbox")
        .numbox()
        .setOption("max", parseInt(newvalue));
    }
  }
};
</script>
<style lang="scss" scoped>
</style>
